package day02.Thiss;

/**
 * @author yangwenqi
 * @decs TODO
 * @date 2025/4/17
 */
/**
 3.写一个类Person,包含以下属性：
 String  name;
 int  age;
 boolean  gender;  //性别  true男  false女
 Person  partner;  //伴侣
 为Person类写一个marry(Person  p)方法，代表当前对象和p结婚，如若可以结婚，则输出恭贺信息，
 否则输出不能结婚原因。要求在另外一个类中写一个主方法，来测试以上程序。
 （下列情况不能结婚：1，同性；2，未达到结婚年龄，男<24，女<22；3，某一方已婚）
 */
public class Person {
    String name;
    int age;
    boolean gender; // true男，false女
    Person partner;
    public Person(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public void marry(Person p) {
        if (gender == p.gender) {
            System.out.println("同性不允许结婚");
            return;
        }
        if ((gender && age < 24) || (!gender && age < 22) ||
                (p.gender && p.age < 24) || (!p.gender && p.age < 22)) {
            System.out.println("未到法定年龄不允许结婚");
            return;
        }
        if (partner != null || p.partner != null) {
            System.out.println("一方已已婚不允许结婚");
            return;
        }
        partner = p;
        p.partner = this;
        System.out.println("恭喜" + name + "与" + p.name + "结婚");
    }
}


